#include"BlockQueue.hpp"
#include<unistd.h>

void*productor(void*args)
{
    BQ<int>*q=static_cast<BQ<int>*>(args);
    int data=1;
    while(true)
    {
        std::cout<<"生产了一个数据："<<data<<std::endl;
        q->Equeue(data);
        data++;
    }

    return nullptr;
}

void*consumer(void*args)
{
    BQ<int>*q=static_cast<BQ<int>*>(args);
    int data=0;
    while(true)
    {
        sleep(1);
        data=q->Pop();
        std::cout<<"消费了一个数据："<<data<<std::endl;
    }

    return nullptr;
}

int main()
{
    
    BQ<int>bq;
    pthread_t csm,pdt;
    pthread_create(&csm,nullptr,consumer,&bq);
    pthread_create(&pdt,nullptr,productor,&bq);


    pthread_join(csm,nullptr);
    pthread_join(pdt,nullptr);

    return 0;
}